contents

Kafka의 개념, 아키텍처, 주요 컴포넌트, 작동 방식, 특징, 그리고 활용 사례까지 간단하게 보겠습니다.


1. Apache Kafka란?


2. Kafka의 주요 개념과 아키텍처

2.1. 토픽(Topic)

2.2. 파티션(Partition)

2.3. 브로커(Broker)

2.4. 복제(Replication)

2.5. 프로듀서(Producer)

2.6. 컨슈머(Consumer)와 컨슈머 그룹(Consumer Group)

2.7. 오프셋(Offset)

2.8. ZooKeeper


3. Kafka 데이터 흐름 과정

  1. 프로듀서가 메시지를 특정 토픽에 보냅니다.
  2. 메시지는 토픽 내의 특정 파티션에 저장되고, 해당 파티션 로그의 끝에 순차적으로 붙습니다.
  3. 브로커는 메시지를 디스크에 영구 저장하며, 복제본도 다른 브로커에 기록됩니다.
  4. 컨슈머는 자신이 속한 컨슈머 그룹 내에서 각자 할당된 파티션의 메시지를 읽습니다.
  5. 컨슈머는 처리 완료 후 자신의 오프셋을 브로커에 커밋(commit)하여 처리 위치를 기록합니다.

4. Kafka의 특징 및 장점


5. Kafka 주요 API 종류

  1. Producer API: 데이터 생성 및 토픽으로 전송.
  2. Consumer API: 토픽 데이터 구독 및 처리.
  3. Streams API: 스트림 처리용, 데이터 변환 및 집계 등 실시간 스트림 연산 지원.
  4. Connector API: 외부 시스템과 Kafka 간 데이터 연동 자동화.

6. Kafka 활용 사례


7. Kafka를 사용해야 하는 경우


참고 구조 요약표

컴포넌트 설명
Producer 메시지를 토픽에 쓰는 주체
Consumer 토픽에서 메시지를 읽는 주체
Broker 메시지를 저장하고 클러스터 관리하는 서버
Topic 데이터 스트림을 논리적으로 구분하는 채널
Partition 토픽의 서브 단위, 병렬 처리 및 확장 가능
Leader 파티션별 읽기/쓰기 요청을 처리하는 브로커
Follower 리더의 데이터를 복제하는 브로커
ZooKeeper 클러스터 상태 및 리더 선출 관리 (KRaft 대체 중)

Apache Kafka는 대규모 실시간 데이터 처리와 이벤트 기반 아키텍처를 위한 핵심 인프라로, 분산 시스템 설계와 데이터 스트리밍 분야에서 필수적인 도구입니다.


아래는 Apache Kafka와 RabbitMQ, ActiveMQ, Pulsar 같은 다른 메시징 시스템들의 차이점을 구조, 성능, 확장성, 사용 사례 등 여러 측면에서 비교한 내용입니다.


1. 메시징 모델


2. 확장성


3. 성능 비교

처리량 & 지연시간 메시지 전달 방식
Kafka 최고 처리량, 저지연 (스트리밍, 분석에 적합) 최소 1회, 설정 시 정확히 1회 가능
RabbitMQ 신뢰성 높지만 중간 정도 처리량 최소 1회, 엄격한 순서 보장
ActiveMQ 배치 처리 시 높은 처리량, 지연변동 있음 최소 1회
Pulsar Kafka와 거의 비슷, 실시간 분석에 최적화 최소 1회, 완전한 엔드투엔드 내구성

4. 저장 및 내결함성


5. 메시징 프로토콜

시스템 지원 프로토콜
Kafka TCP 위 바이너리 프로토콜
RabbitMQ AMQP, STOMP, MQTT 등
ActiveMQ OpenWire, AMQP, MQTT, STOMP 등
Pulsar 네이티브 프로토콜, WebSocket, HTTP API

6. 컨슈머 모델


7. 생태계 및 통합


8. 최적 활용 사례

시스템 대표 사용 사례
Kafka 실시간 분석, 데이터 파이프라인, 이벤트 수집, 스트리밍 ETL, 마이크로서비스 간 통신
RabbitMQ 작업 큐, 트랜잭션 메시징, 신뢰성 요구 짧은 메시지
ActiveMQ 엔터프라이즈 통합, 레거시 Java/JMS 시스템, 미들웨어
Pulsar 대규모 스트림 분석, 실시간 대시보드, 멀티테넌시, 이벤트 기반 앱

9. 커뮤니티 및 성숙도


요약 표

특징 Kafka RabbitMQ ActiveMQ Pulsar
모델 퍼브/섭 스트리밍 큐, 퍼브/섭 큐, 퍼브/섭 퍼브/섭, 큐
확장성 최고 우수 우수 최고
성능 최고 중간 우수 최고
내구성 내구성 강함 내구성 있음 내구성 있음 내구성 강함
프로토콜 TCP/바이너리 AMQP/MQTT/STOMP AMQP/MQTT/STOMP 네이티브/WebSocket/HTTP
생태계 가장 큼 풍부 보통 성장 중
적합한 용도 실시간, 빅데이터 신뢰성, 작업 큐 레거시 & 통합 스트리밍, 분석, 멀티테넌시

결론
Kafka는 초고속, 확장성 높은 실시간 데이터 스트리밍과 처리에 가장 적합합니다. RabbitMQ와 ActiveMQ는 신뢰성 높은 메시징과 전통적인 메시징 패턴에 강점을 가지며, Pulsar는 멀티테넌시와 고급 스트림 처리에 점점 각광받고 있습니다. 사용 목적과 시스템 요구 사항에 따라 적절한 선택이 중요합니다.

references